{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 731 entries, 0 to 730\n",
      "Data columns (total 15 columns):\n",
      " #   Column      Non-Null Count  Dtype  \n",
      "---  ------      --------------  -----  \n",
      " 0   dteday      731 non-null    object \n",
      " 1   season      731 non-null    int64  \n",
      " 2   yr          731 non-null    int64  \n",
      " 3   mnth        731 non-null    int64  \n",
      " 4   holiday     731 non-null    int64  \n",
      " 5   weekday     731 non-null    int64  \n",
      " 6   workingday  731 non-null    int64  \n",
      " 7   weathersit  731 non-null    int64  \n",
      " 8   temp        731 non-null    float64\n",
      " 9   atemp       731 non-null    float64\n",
      " 10  hum         731 non-null    float64\n",
      " 11  windspeed   731 non-null    float64\n",
      " 12  casual      731 non-null    int64  \n",
      " 13  registered  731 non-null    int64  \n",
      " 14  cnt         731 non-null    int64  \n",
      "dtypes: float64(4), int64(10), object(1)\n",
      "memory usage: 85.8+ KB\n",
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 731 entries, 0 to 730\n",
      "Data columns (total 34 columns):\n",
      " #   Column        Non-Null Count  Dtype  \n",
      "---  ------        --------------  -----  \n",
      " 0   season_1      731 non-null    uint8  \n",
      " 1   season_2      731 non-null    uint8  \n",
      " 2   season_3      731 non-null    uint8  \n",
      " 3   season_4      731 non-null    uint8  \n",
      " 4   mnth_1        731 non-null    uint8  \n",
      " 5   mnth_2        731 non-null    uint8  \n",
      " 6   mnth_3        731 non-null    uint8  \n",
      " 7   mnth_4        731 non-null    uint8  \n",
      " 8   mnth_5        731 non-null    uint8  \n",
      " 9   mnth_6        731 non-null    uint8  \n",
      " 10  mnth_7        731 non-null    uint8  \n",
      " 11  mnth_8        731 non-null    uint8  \n",
      " 12  mnth_9        731 non-null    uint8  \n",
      " 13  mnth_10       731 non-null    uint8  \n",
      " 14  mnth_11       731 non-null    uint8  \n",
      " 15  mnth_12       731 non-null    uint8  \n",
      " 16  weathersit_1  731 non-null    uint8  \n",
      " 17  weathersit_2  731 non-null    uint8  \n",
      " 18  weathersit_3  731 non-null    uint8  \n",
      " 19  weekday_0     731 non-null    uint8  \n",
      " 20  weekday_1     731 non-null    uint8  \n",
      " 21  weekday_2     731 non-null    uint8  \n",
      " 22  weekday_3     731 non-null    uint8  \n",
      " 23  weekday_4     731 non-null    uint8  \n",
      " 24  weekday_5     731 non-null    uint8  \n",
      " 25  weekday_6     731 non-null    uint8  \n",
      " 26  temp          731 non-null    float64\n",
      " 27  atemp         731 non-null    float64\n",
      " 28  hum           731 non-null    float64\n",
      " 29  windspeed     731 non-null    float64\n",
      " 30  holiday       731 non-null    int64  \n",
      " 31  workingday    731 non-null    int64  \n",
      " 32  yr            731 non-null    int64  \n",
      " 33  cnt           731 non-null    float64\n",
      "dtypes: float64(5), int64(3), uint8(26)\n",
      "memory usage: 64.4 KB\n"
     ]
    }
   ],
   "source": [
    "# 导图工具包\n",
    "import numpy as np\n",
    "import seaborn as sns\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.preprocessing import MinMaxScaler\n",
    "from sklearn.linear_model import LinearRegression\n",
    "from sklearn.linear_model import RidgeCV\n",
    "from sklearn.linear_model import LassoCV\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.metrics import r2_score\n",
    "\n",
    "df = pd.read_csv(\"day.csv\")\n",
    "df.head()\n",
    "# 去除记录号\n",
    "df = df.drop('instant', axis=1)\n",
    "df.info()\n",
    "\n",
    "df.describe()\n",
    "\n",
    "# 分离输入和输出\n",
    "y = df['cnt']\n",
    "X = df.drop('cnt', axis=1)\n",
    "\n",
    "# 对离散型特征进行编码\n",
    "X['season'].astype('object')\n",
    "season_cat = X['season']\n",
    "season_cat = pd.get_dummies(season_cat, prefix='season')\n",
    "X = X.drop('season', axis=1)\n",
    "\n",
    "X['weekday'].astype('object')\n",
    "weekday_cat = X['weekday']\n",
    "weekday_cat = pd.get_dummies(weekday_cat, prefix='weekday')\n",
    "X = X.drop('weekday', axis=1)\n",
    "\n",
    "X['mnth'].astype('object')\n",
    "mnth_cat = X['mnth']\n",
    "mnth_cat = pd.get_dummies(mnth_cat, prefix='mnth')\n",
    "X = X.drop('mnth', axis=1)\n",
    "\n",
    "X['weathersit'].astype('object')\n",
    "weathersit_cat = X['weathersit']\n",
    "weathersit_cat = pd.get_dummies(weathersit_cat, prefix='weathersit')\n",
    "X = X.drop('weathersit', axis=1)\n",
    "\n",
    "# 对数值型特征进行标准化\n",
    "mn_X = MinMaxScaler()\n",
    "numerical_features = ['temp','atemp','hum','windspeed']\n",
    "temp = mn_X.fit_transform(X[numerical_features])\n",
    "X_num = pd.DataFrame(data=temp, columns=numerical_features, index=X.index)\n",
    "X_num.head()\n",
    "\n",
    "# 将离散型特征和数值型特征整合到一起\n",
    "X_train = pd.concat([season_cat, mnth_cat, weathersit_cat, weekday_cat, X_num, X['holiday'],  X['workingday'], X['yr']], axis = 1, ignore_index=False)\n",
    "X_train.head()\n",
    "\n",
    "# 对输出特征进行标准化\n",
    "mn_y = MinMaxScaler()\n",
    "temp = mn_y.fit_transform(y.values.reshape(-1, 1))\n",
    "# 添加输出特征\n",
    "X_train['cnt'] = temp\n",
    "\n",
    "X_train.to_csv('my_FE_day.csv', index=False)\n",
    "X_train.head()\n",
    "X_train.info()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Index(['season_1', 'season_2', 'season_3', 'season_4', 'mnth_1', 'mnth_2',\n",
      "       'mnth_3', 'mnth_4', 'mnth_5', 'mnth_6', 'mnth_7', 'mnth_8', 'mnth_9',\n",
      "       'mnth_10', 'mnth_11', 'mnth_12', 'weathersit_1', 'weathersit_2',\n",
      "       'weathersit_3', 'weekday_0', 'weekday_1', 'weekday_2', 'weekday_3',\n",
      "       'weekday_4', 'weekday_5', 'weekday_6', 'temp', 'atemp', 'hum',\n",
      "       'windspeed', 'holiday', 'workingday', 'yr'],\n",
      "      dtype='object')\n",
      "         columns          coef\n",
      "25     weekday_6  2.884201e+13\n",
      "19     weekday_0  2.884201e+13\n",
      "31    workingday  2.583964e+13\n",
      "30       holiday  2.583964e+13\n",
      "22     weekday_3  3.002374e+12\n",
      "24     weekday_5  3.002374e+12\n",
      "23     weekday_4  3.002374e+12\n",
      "21     weekday_2  3.002374e+12\n",
      "20     weekday_1  3.002374e+12\n",
      "26          temp  3.096826e-01\n",
      "32            yr  2.357561e-01\n",
      "27         atemp  7.189514e-02\n",
      "29     windspeed -1.350411e-01\n",
      "28           hum -1.551498e-01\n",
      "3       season_4 -4.244762e+10\n",
      "1       season_2 -4.244762e+10\n",
      "2       season_3 -4.244762e+10\n",
      "0       season_1 -4.244762e+10\n",
      "16  weathersit_1 -4.519846e+12\n",
      "17  weathersit_2 -4.519846e+12\n",
      "18  weathersit_3 -4.519846e+12\n",
      "12        mnth_9 -7.501280e+12\n",
      "11        mnth_8 -7.501280e+12\n",
      "13       mnth_10 -7.501280e+12\n",
      "8         mnth_5 -7.501280e+12\n",
      "9         mnth_6 -7.501280e+12\n",
      "6         mnth_3 -7.501280e+12\n",
      "7         mnth_4 -7.501280e+12\n",
      "10        mnth_7 -7.501280e+12\n",
      "5         mnth_2 -7.501280e+12\n",
      "15       mnth_12 -7.501280e+12\n",
      "4         mnth_1 -7.501280e+12\n",
      "14       mnth_11 -7.501280e+12\n",
      "The RMSE score of LinearRegression on test is 0.0955564734160225\n",
      "The RMSE score of LinearRegression on train is 0.08746500624426834\n",
      "The r2 score of LinearRegression on test is 0.8210773067768627\n",
      "The r2 score of LinearRegression on train is 0.8445785673658058\n"
     ]
    },
    {
     "data": {
      "image/png": "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bt069tprL2688UYAHn/88Rdsp6Ojg49//OO0t7ezyy67cPTRRzNz5szt7nvMmDFcf/31jBs3jkcffZRZs2Zx0kknvWDQ1De+8Q2OO+44PvKRj7Bp0yb+/Oc/96md999/P7fccgtPPvkkr3jFKzjvvPN44IEHuOaaa7jttttoaWnhHe94B1dffTVnnHEGn/nMZ5gwYQKbNm1i7ty53HPPPRx88MFb6r711lv7VEdn9f4/5XcDV0fEi4DfAP+VWi/72og4G/gd8OZ+VyNJapqnn36aGTNm8OCDD/Ka17yGY445BqiF8k033bQlUDds2MCqVas48sgj+cAHPsCHPvQh5s2bx5FHHvmC7d1xxx3MmTOHzZcuTznlFH71q19tt4bM5MMf/jDLly9nhx124JFHHmHNmjXsueeeW9Y59NBDOeuss3juuec4+eSTmTFjRp/ae+KJJ7Ljjjuy4447MmnSJNasWcPSpUtpb2/n0EMP3XJMJk2qDZm69tprWbRoERs3bqSjo4Nf/OIXW0L5lFNO6VMNW6srlDPzbqC1i0VzG1KFJKnpNl9Tfvzxx5k3bx6XX34573nPe8hMLrroIs4999xtXtPe3s73vvc9LrroIo499lg+9rGPvWB5d/8taPTo0Tz//PNALYifffZZAK6++mrWrVtHe3s7LS0tTJs2bZv/63vUUUexfPlybrzxRk4//XQuuOACzjjjjF63d8cdd9wyPWrUKDZu3EhmsmDBAj772c++YN3f/va3XHLJJdx1113suuuunHnmmS+oa6eddur1/rviHb2kEabeUb2NHv2roWOXXXbhsssuY/78+Zx33nkcd9xxfPSjH+XUU09l7NixPPLII7S0tLBx40YmTJjAaaedxtixY7niiitesJ3Xvva1nH/++axfv55x48bx7W9/m+nTpwO167Dt7e285S1vYcmSJTz33HNA7RT4pEmTaGlp4ZZbbuGhh7b9lsOHHnqIvffem3POOYennnqKn/zkJ30K5a7MnTuX+fPn8773vY9Jkybxxz/+kSeffJInnniCnXbaiV122YU1a9bw/e9/nzlz5jRkn50ZypJUoGb/UTRz5kymT5/Ot771LU4//XRWrlzJ7NmzgdqgrKuuuooHHniACy64gB122IGWlha+9KUvvWAbkydPpq2tjdmzZzN58mQOOeSQLYOmzjnnHObPn89h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\n",
      "text/plain": [
       "<Figure size 504x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "         columns       coef_lr  coef_ridge\n",
      "25     weekday_6  2.884201e+13    0.026098\n",
      "19     weekday_0  2.884201e+13   -0.022139\n",
      "31    workingday  2.583964e+13    0.024348\n",
      "30       holiday  2.583964e+13   -0.028307\n",
      "22     weekday_3  3.002374e+12    0.007005\n",
      "24     weekday_5  3.002374e+12    0.009518\n",
      "23     weekday_4  3.002374e+12    0.006973\n",
      "21     weekday_2  3.002374e+12   -0.003828\n",
      "20     weekday_1  3.002374e+12   -0.023626\n",
      "26          temp  3.096826e-01    0.206065\n",
      "32            yr  2.357561e-01    0.232385\n",
      "27         atemp  7.189514e-02    0.177930\n",
      "29     windspeed -1.350411e-01   -0.124526\n",
      "28           hum -1.551498e-01   -0.130080\n",
      "3       season_4 -4.244762e+10    0.090386\n",
      "1       season_2 -4.244762e+10    0.011460\n",
      "2       season_3 -4.244762e+10   -0.009499\n",
      "0       season_1 -4.244762e+10   -0.092348\n",
      "16  weathersit_1 -4.519846e+12    0.105384\n",
      "17  weathersit_2 -4.519846e+12    0.044535\n",
      "18  weathersit_3 -4.519846e+12   -0.149919\n",
      "12        mnth_9 -7.501280e+12    0.088549\n",
      "11        mnth_8 -7.501280e+12    0.029552\n",
      "13       mnth_10 -7.501280e+12    0.024690\n",
      "8         mnth_5 -7.501280e+12    0.038376\n",
      "9         mnth_6 -7.501280e+12    0.040284\n",
      "6         mnth_3 -7.501280e+12    0.019057\n",
      "7         mnth_4 -7.501280e+12    0.001365\n",
      "10        mnth_7 -7.501280e+12   -0.026913\n",
      "5         mnth_2 -7.501280e+12   -0.036117\n",
      "15       mnth_12 -7.501280e+12   -0.068807\n",
      "4         mnth_1 -7.501280e+12   -0.046737\n",
      "14       mnth_11 -7.501280e+12   -0.063298\n",
      "The RMSE score of RidgeRegression on test is 0.09335218835687094\n",
      "The RMSE score of RidgeRegression on train is 0.08585974479088038\n",
      "The r2 score of RidgeRegression on test is 0.829236830856235\n",
      "The r2 score of RidgeRegression on train is 0.8502311719604645\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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YrvbHj58ODfeeCO77rorTz31FMcccwxnnHHGqy6euvbaazn11FP5zGc+w+bNm/nDH/6w3XX+5Cc/YebMmdtMX758OYsWLeK+++5j06ZNTJkyhSOPPBKAD3zgA8yfP59jjz2WuXPnbn3NggULGDlyJPfccw8vvvgixx13HKecckqX/vtTewxlSdKr/PGPf2Ty5Mk8/vjjHHnkkZx88slALZRvvfXWrYG6ceNGVq1axfHHH89FF13Epz71Kd7xjndw/PHHv2p9d911FyeeeCJjxtR+GGnWrFk88sgj260hM/n0pz/N0qVL2WGHHXjiiSd48skn2Xvvvbcuc9RRR/HBD36Ql19+mZkzZ249V9zWWWedxfPPP8/mzZu59957t5n/s5/9jHe961285jWvAeCMM84AYMOGDTz33HMce+yxAJx55pncfPPNW/fFAw88sLWX/8wzz7Bq1aoeh7KHryVJr7LlnPLq1at56aWXtp5TzkwuueQSVqxYwYoVK3j00UeZM2cOBx10EMuXL+ewww7jkksu4W/+5m+2WWdH/z1oxx135JVXXtm6/pdeegmonQdet24dy5cvZ8WKFey1117b/J/fE044gaVLlzJu3DjOOeccvv/977e7jWuuuYbHHnuMM888k49+9KPtLtNefZnZwR6qzfvGN76xdV889thjnHLKKR0uXy97ypLaVe9Vv719dbDKMXLkSL7+9a8zY8YMPvzhD3Pqqafy2c9+lrPOOovm5maeeOIJmpqa2LRpE6NHj+bss8+mubmZq6666lXreeMb38iFF17I+vXr2XXXXfnHf/xHJk2aBNTO6y5fvpz3vOc9LF68mJdffhmo9Tz33HNPmpqa+OlPf8rq1dv+2uHq1asZN24c559/Ps8//zz33nsv73//+9ttS1NTE1/4whc44IADWLlyJW94wxu2zjvhhBM499xzmTt3Lps2beJf/uVf+NCHPsSoUaPYZZdduPPOOznmmGNYtGjR1teceuqpXHHFFbz1rW+lqamJRx55hHHjxjFixIge7XNDWZIK1ugvPUcccQSTJk1i0aJFnHPOOaxcuZJp06YBtYuyrr76ah599FEuvvhidthhB5qamrjiiitetY6xY8cyb948pk2bxtixY5kyZQqbN28G4Pzzz2fGjBkcffTRTJ8+fWuonXXWWbzzne9k6tSpTJ48mUMOOWSb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\n",
      "text/plain": [
       "<Figure size 504x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "the best ridge_alpha is: 1.0\n",
      "         columns       coef_lr  coef_ridge  coef_lasso\n",
      "25     weekday_6  2.884201e+13    0.026098    0.000287\n",
      "19     weekday_0  2.884201e+13   -0.022139   -0.045744\n",
      "31    workingday  2.583964e+13    0.024348    0.004888\n",
      "30       holiday  2.583964e+13   -0.028307   -0.043644\n",
      "22     weekday_3  3.002374e+12    0.007005    0.000000\n",
      "24     weekday_5  3.002374e+12    0.009518    0.001874\n",
      "23     weekday_4  3.002374e+12    0.006973    0.000000\n",
      "21     weekday_2  3.002374e+12   -0.003828   -0.008557\n",
      "20     weekday_1  3.002374e+12   -0.023626   -0.028280\n",
      "26          temp  3.096826e-01    0.206065    0.304599\n",
      "32            yr  2.357561e-01    0.232385    0.232238\n",
      "27         atemp  7.189514e-02    0.177930    0.110560\n",
      "29     windspeed -1.350411e-01   -0.124526   -0.129052\n",
      "28           hum -1.551498e-01   -0.130080   -0.138825\n",
      "3       season_4 -4.244762e+10    0.090386    0.080044\n",
      "1       season_2 -4.244762e+10    0.011460    0.000000\n",
      "2       season_3 -4.244762e+10   -0.009499   -0.015372\n",
      "0       season_1 -4.244762e+10   -0.092348   -0.106151\n",
      "16  weathersit_1 -4.519846e+12    0.105384    0.058675\n",
      "17  weathersit_2 -4.519846e+12    0.044535   -0.000000\n",
      "18  weathersit_3 -4.519846e+12   -0.149919   -0.195525\n",
      "12        mnth_9 -7.501280e+12    0.088549    0.072760\n",
      "11        mnth_8 -7.501280e+12    0.029552    0.006598\n",
      "13       mnth_10 -7.501280e+12    0.024690    0.017362\n",
      "8         mnth_5 -7.501280e+12    0.038376    0.027928\n",
      "9         mnth_6 -7.501280e+12    0.040284    0.022775\n",
      "6         mnth_3 -7.501280e+12    0.019057    0.017804\n",
      "7         mnth_4 -7.501280e+12    0.001365   -0.000070\n",
      "10        mnth_7 -7.501280e+12   -0.026913   -0.047712\n",
      "5         mnth_2 -7.501280e+12   -0.036117   -0.029189\n",
      "15       mnth_12 -7.501280e+12   -0.068807   -0.065415\n",
      "4         mnth_1 -7.501280e+12   -0.046737   -0.038167\n",
      "14       mnth_11 -7.501280e+12   -0.063298   -0.062843\n",
      "The RMSE score of LassoRegression on test is 0.0928308783586242\n",
      "The RMSE score of LassoRegression on train is 0.08584629412241246\n",
      "The r2 score of LassoRegression on test is 0.8311387035094606\n",
      "The r2 score of LassoRegression on train is 0.8502780934383707\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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+djHPsby5csZM2YMJ5xwAjNmzNjtvkeOHMnNN9/M6NGjeeyxx5g1axannXbaCwZQfe1rX+Okk07iQx/6ENu3b+fpp5+uq10TJkxgyZIljBw5klWrVnHWWWfR3t7e6fZWrFjBmjVruO+++wDYtGkTAOeddx6f//znOe644/joRz/KpZdeyhVXXFHfG9sFe8qSpF387ne/Y/r06ey777789re/5cQTTwRqoXzrrbcyY8YMZs6cyQMPPMCqVauYOnUq3/ve9/jABz7A7bffzpgxY16wvTvvvJPjjz+e1tZW9tprL9761rd2W0Nm8sEPfpAjjzyS17/+9axZs4Z169a9YJ2jjjqKq6++moULF3Lvvfeyzz771NW+rVu3cuGFFzJ16lTOPPNMfvGLX3S5vYMPPpiHHnqId7/73Xz3u99l9OjRbN68mU2bNnHccccBMG/ePJYtW1bXvnfHUJYk7WLHNeVHHnmEZ5999vlrypnJJZdcwooVK1ixYgUPPvgg8+fP57DDDmP58uVMnTqVSy65hI9//OO7bLOrPxHac889ee65557f/rPPPgvA9ddfz4YNG1i+fDkrVqxg4sSJu/zd77HHHsuyZcs44IADOPfcc/nqV79aV/suv/xyJk6cyD333EN7e/vz++xse+PGjeOee+7h+OOP58orr+SCCy6o703sBU9fS+qTekcGN3oEsQbGmDFj+NznPsfcuXN55zvfyUknncRHPvIRzj77bEaNGsWaNWtoaWlh27ZtjB8/nnPOOYdRo0ZxzTXXvGA7r371q7nooovYuHEjo0eP5pvf/CbTpk0Dal/ru3z5ct7ylrewePFitm7dCtROgU+YMIGWlha+//3v88gju37j4SOPPMIBBxzAhRdeyFNPPcXdd9/Neeed1227Nm/ezOTJk9ljjz1YtGgR27dv73J7p5xyCnvttRdnnHEGhxxyCOeffz5jxoxh3Lhx3H777RxzzDFce+21z/ea+8JQlqTCDfYHmhkzZjBt2jS+8Y1vcO6557Jy5Upmz54N1AZlXXfddTz44IO8733vY4899qClpYUvfvGLL9jGpEmTWLhwIbNnz2bSpEnMnDnz+SC88MILmTt3LkcffTRz5sxh7733BuDss8/mTW96E21tbUyfPp1XvvKVu9R22223cdlll9HS0sKoUaO67Cmfeuqpz9+Devbs2XziE5/g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\n",
      "text/plain": [
       "<Figure size 504x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "the best ridge_alpha is: 0.00019039713801269359\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "(Text(0.5, 1, 'Coefficients in the Lasso Model'), None, None, None)"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import sys\n",
    "import numpy as np\n",
    "import seaborn as sns\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.preprocessing import MinMaxScaler\n",
    "from sklearn.linear_model import LinearRegression\n",
    "from sklearn.linear_model import RidgeCV\n",
    "from sklearn.linear_model import LassoCV\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.metrics import r2_score\n",
    "from sklearn.metrics import mean_squared_error\n",
    "\n",
    "df = pd.read_csv(\"my_FE_day.csv\")\n",
    "# df.info()\n",
    "\n",
    "# 从原始数据中分离输入特征x和输出y\n",
    "y = df[\"cnt\"]\n",
    "X = df.drop([\"cnt\"], axis = 1)\n",
    "# 特征名称，用于后续显示权重系数对应的特征\n",
    "feat_names = X.columns\n",
    "print(feat_names)\n",
    "\n",
    "# 随机采样20%的数据构建测试样本，其余作为训练样本\n",
    "X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=33, test_size=0.2)\n",
    "\n",
    "'''\n",
    "以下采用最小二乘线性回归\n",
    "'''\n",
    "lr = LinearRegression()\n",
    "lr.fit(X_train, y_train)\n",
    "y_train_pred_lr = lr.predict(X_train)\n",
    "y_test_pred_lr = lr.predict(X_test)\n",
    "# 看看各特征的权重系数\n",
    "fs = pd.DataFrame({\"columns\":list(feat_names), \"coef\":list((lr.coef_.T))})\n",
    "print(fs.sort_values(by=['coef'], ascending=False))\n",
    "# 测试集和训练集的评价分数 - rmse\n",
    "print('The RMSE score of LinearRegression on test is', np.sqrt(mean_squared_error(y_test, y_test_pred_lr)))\n",
    "print('The RMSE score of LinearRegression on train is', np.sqrt(mean_squared_error(y_train, y_train_pred_lr)))\n",
    "print('The r2 score of LinearRegression on test is', r2_score(y_test, y_test_pred_lr))\n",
    "print('The r2 score of LinearRegression on train is', r2_score(y_train, y_train_pred_lr))\n",
    "# 在训练集上观察预测残差的分布\n",
    "f, ax = plt.subplots(figsize=(7, 5))\n",
    "f.tight_layout()\n",
    "ax.hist(y_train - y_train_pred_lr, bins=40, label='Residuals Linear', color='b', alpha=.5)\n",
    "ax.set_title(\"Histogram of Residuals : Linear\")\n",
    "ax.legend(loc='best')\n",
    "plt.ion(), plt.pause(2), plt.close()\n",
    "\n",
    "'''\n",
    "以下采用岭回归\n",
    "'''\n",
    "alphas = [ 0.01, 0.1, 1, 10,100]\n",
    "ridge = RidgeCV(alphas=alphas, store_cv_values=True)\n",
    "ridge.fit(X_train, y_train)\n",
    "y_test_pred_ridge = ridge.predict(X_test)\n",
    "y_train_pred_ridge = ridge.predict(X_train)\n",
    "# 看看各特征的权重系数，系数的绝对值大小可视为该特征的重要性\n",
    "fs = pd.DataFrame({\"columns\":list(feat_names), \"coef_lr\":list((lr.coef_.T)), \"coef_ridge\":list((ridge.coef_.T))})\n",
    "print(fs.sort_values(by=['coef_lr'],ascending=False))\n",
    "# 可视化参数,每个alpha的交叉验证值(如果store_cv_values=True和cv=None)。在fit()被调用之后，这个属性将包含均方差\n",
    "mse_mean = np.mean(ridge.cv_values_, axis = 0)\n",
    "plt.xlabel('log(alpha)')\n",
    "plt.ylabel('mse')\n",
    "plt.plot(np.log10(alphas), mse_mean.reshape(len(alphas),1))\n",
    "# 测试集和训练集的评价分数 - rmse\n",
    "print('The RMSE score of RidgeRegression on test is', np.sqrt(mean_squared_error(y_test, y_test_pred_ridge)))\n",
    "print('The RMSE score of RidgeRegression on train is', np.sqrt(mean_squared_error(y_train, y_train_pred_ridge)))\n",
    "print('The r2 score of RidgeRegression on test is', r2_score(y_test, y_test_pred_ridge))\n",
    "print('The r2 score of RidgeRegression on train is', r2_score(y_train, y_train_pred_ridge))\n",
    "# 在训练集上观察预测残差的分布\n",
    "f, ax = plt.subplots(figsize=(7, 5))\n",
    "f.tight_layout()\n",
    "ax.hist(y_train - y_train_pred_ridge, bins=40, label='Residuals Ridge', color='b', alpha=.5)\n",
    "ax.set_title(\"Histogram of Residuals : Ridge\")\n",
    "ax.legend(loc='best')\n",
    "plt.ion(), plt.pause(2), plt.close()\n",
    "print('the best ridge_alpha is:', ridge.alpha_)\n",
    "\n",
    "'''\n",
    "以下采用lasso\n",
    "'''\n",
    "lasso = LassoCV()\n",
    "lasso.fit(X_train, y_train)\n",
    "y_test_pred_lasso = lasso.predict(X_test)\n",
    "y_train_pred_lasso = lasso.predict(X_train)\n",
    "# 看看各特征的权重系数，系数的绝对值大小可视为该特征的重要性\n",
    "fs = pd.DataFrame({\"columns\":list(feat_names), \"coef_lr\":list((lr.coef_.T)), \"coef_ridge\":list((ridge.coef_.T)), \"coef_lasso\":list((lasso.coef_.T)),})\n",
    "print(fs.sort_values(by=['coef_lr'],ascending=False))\n",
    "# 可视化参数,每个alpha的交叉验证值(如果store_cv_values=True和cv=None)。在fit()被调用之后，这个属性将包含均方差\n",
    "mse_mean = np.mean(lasso.mse_path_, axis = 0)\n",
    "plt.xlabel('log(alpha)')\n",
    "plt.ylabel('mse')\n",
    "plt.plot(np.log10(alphas), mse_mean.reshape(len(alphas),1))\n",
    "# 测试集和训练集的评价分数 - rmse\n",
    "print('The RMSE score of LassoRegression on test is', np.sqrt(mean_squared_error(y_test, y_test_pred_lasso)))\n",
    "print('The RMSE score of LassoRegression on train is', np.sqrt(mean_squared_error(y_train, y_train_pred_lasso)))\n",
    "print('The r2 score of LassoRegression on test is', r2_score(y_test, y_test_pred_lasso))\n",
    "print('The r2 score of LassoRegression on train is', r2_score(y_train, y_train_pred_lasso))\n",
    "# 在训练集上观察预测残差的分布\n",
    "f, ax = plt.subplots(figsize=(7, 5))\n",
    "f.tight_layout()\n",
    "ax.hist(y_train - y_train_pred_lasso, bins=40, label='Residuals Lasso', color='b', alpha=.5)\n",
    "ax.set_title(\"Histogram of Residuals : Lasso\")\n",
    "ax.legend(loc='best')\n",
    "plt.ion(), plt.pause(2), plt.close()\n",
    "print('the best ridge_alpha is:', lasso.alpha_)\n",
    "\n",
    "# \n",
    "lr_coefs = pd.Series(lr.coef_, index = feat_names)\n",
    "ridge_coefs = pd.Series(ridge.coef_, index = feat_names)\n",
    "lasso_coefs = pd.Series(lasso.coef_, index = feat_names)\n",
    "pd.concat([lr_coefs.sort_values().head(10),lr_coefs.sort_values().tail(10)]).plot(kind = \"barh\")\n",
    "plt.title(\"Coefficients in the LR Model\"), plt.ion(), plt.pause(2), plt.close()\n",
    "pd.concat([ridge_coefs.sort_values().head(10),ridge_coefs.sort_values().tail(10)]).plot(kind = \"barh\")\n",
    "plt.title(\"Coefficients in the Ridge Model\"), plt.ion(), plt.pause(2), plt.close()\n",
    "pd.concat([lasso_coefs.sort_values().head(10),lasso_coefs.sort_values().tail(10)]).plot(kind = \"barh\")\n",
    "plt.title(\"Coefficients in the Lasso Model\"), plt.ion(), plt.pause(2), plt.close()\n",
    "\n",
    "'''\n",
    "The RMSE score of LinearRegression on test is 0.0955564734160225\n",
    "The RMSE score of LinearRegression on train is 0.08746500624426834\n",
    "The r2 score of LinearRegression on test is 0.8210773067768627\n",
    "The r2 score of LinearRegression on train is 0.8445785673658058\n",
    "\n",
    "The RMSE score of RidgeRegression on test is 0.09335218835687094\n",
    "The RMSE score of RidgeRegression on train is 0.08585974479088038\n",
    "The r2 score of RidgeRegression on test is 0.829236830856235\n",
    "The r2 score of RidgeRegression on train is 0.8502311719604645\n",
    "\n",
    "The RMSE score of LassoRegression on test is 0.0928308783586242\n",
    "The RMSE score of LassoRegression on train is 0.08584629412241246\n",
    "The r2 score of LassoRegression on test is 0.8311387035094606\n",
    "The r2 score of LassoRegression on train is 0.8502780934383707\n",
    "最小二乘线性回归的系数十分大，最大系数达到了2.884201e+13，由于特征之间强相关，OLS模型的性能并不好\n",
    "岭回归增加了L2正则，系数进行了收缩，由于增加正则限制了模型复杂的，相比比OLS模型，岭回归模型在训练集上的误差略有增大\n",
    "Lasso模型增加了L1正则，系数值进行了收缩，同时有些特征的系数为0。以r2分数进行评价时，岭回归的效果比Lasso稍好一点\n",
    "'''"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
